package com.hrbxlh.dao;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;

import org.springframework.stereotype.Repository;

/**
* -------------------------------------------------------
* Copyright (c) 2017, 鑫联华信息科技股份有限公司
* All rights reserved.
* FileName：MemberDao.java
* Description：人员MemberDao类,负责操作人员数据。
* History：
* Date           Author               Desc
* 2017.1.6		  sy                   建立
* -------------------------------------------------------
*/

@Repository
public interface MemberDao {

	/**
	 * @description 添加人员的方法，参数key与数据库column对应即可。 
	 * @param Map<String,Object> paramMap
	 * @return 
	 * @throws Exception
	 */
	 boolean addMember(Map<String, Object> paramMap) throws Exception;
	
	/**
	 * @description 查询人员的方法
	 * @param Map<String,Object> paramMap 参数值与数据库column值一致
	 * @return List<Map<String, Object>> 人员列表（如果查询一个人，就在参数中给人员id）
	 * @throws Exception
	 */
	 List<Map<String, Object>> getMember(Map<String,Object> paramMap) throws Exception;

	/**
	 * @description 查询过期人员的方法
	 * @param Map<String,Object> paramMap 参数值与数据库column值一致
	 * @return List<Map<String, Object>> 人员列表（如果查询一个人，就在参数中给人员id）
	 * @throws Exception
	 */
	List<Map<String, Object>> getOverMemberList(Map<String,Object> paramMap) throws Exception;
	
	/**
	 * @description 班级下的学生
	 * @param Map<String,Object> paramMap 参数值与数据库column值一致
	 * @return List<Map<String, Object>> 人员列表（如果查询一个人，就在参数中给人员id）
	 * @throws Exception
	 */
	 List<Map<String, Object>> getMemberByClassId(Map<String,Object> paramMap) throws Exception;
	
	/**
	 * @description 修改人员的方法，参数key与数据库column对应即可。 
	 * @param Map<String,Object> paramMap 人员信息，列值，
	 * @return boolean (true 成功 ,false失败)
	 * @throws Exception
	 */
	 boolean saveMember(Map<String,Object> paramMap) throws Exception;

	/**
	 * @description 修改我的信息
	 * @param Map<String,Object> paramMap 人员信息，列值，
	 * @return boolean (true 成功 ,false失败)
	 * @throws Exception
	 */
	 boolean saveMyInfo(Map<String,Object> paramMap) throws Exception;

	/**
	 * @description 修改用户信息
	 * @param Map<String,Object> paramMap 人员信息，列值，
	 * @return boolean (true 成功 ,false失败)
	 * @throws Exception
	 */
	 boolean saveUser(Map<String,Object> paramMap) throws Exception;
	
	/**
	 * @description 通过班级号删除人员
	 * @param List<Integer> 班级id的集合
	 * @return 
	 * @throws Exception
	 */
	 boolean delMemberByClassId(List<String> paramList) throws Exception;
	
	/**
	 * @description 删除人员的方法，传的是每个人员的id
	 * @param List<Integer> 人员id的集合
	 * @return 
	 * @throws Exception
	 */
	 boolean delMember(List<String> paramList) throws Exception;
	
	/**
	 * @description 获取这个学号/工号的全部人员
	 * @param String loginName登录名
	 * @return List<Map<String, Object>> 人员集合
	 * @throws Exception
	 */
	 List<Map<String, Object>> getMemberByStuorteaId(String stuorteaId) throws Exception;
	
	/**
	 * @description 通过登录名获取人员信息（管理人员中用到的有部门关联）
	 * @param String loginName登录名
	 * @return List<Map<String, Object>> 人员集合
	 * @throws Exception
	 */
	 List<Map<String, Object>> getAdminByStuorteaId(String stuorteaId) throws Exception;
	
	/**
	 * @description 修改密码，通过登录名
	 * @param Map<String, Object> 登录名  密码
	 * @return 
	 * @throws Exception
	 */
	 void savePassword(Map<String, Object> paramMap) throws Exception;
	

	/**
	 * @description  通过学号查询当前学生的所学的课程（到时候粘到刑的课程表中）
	 * @param Map<String, Object> 
	 * @return  List<Map<String, Object>>学生/教师所有的课程
	 * @throws Exception
	 */
	 List<Map<String, Object>> getCoruseByStuorteaId(Map<String, Object> paramMap) throws Exception;
	
	/**
	 * @description 通过班级号查询每个班级的人数
	 * @param Map<String,Object> paramMap 参数值与数据库column值一致
	 * @return List<Map<String, Object>> 人员列表（如果查询一个人，就在参数中给人员id）
	 * @throws Exception
	 */
	 List<Map<String, Object>> getStuCountByClassId(String classId) throws Exception;

	/**
	 * @description 增加教师的简介和照片
	 * @param Map<String, Object> 简介，照片，教师Id
	 * @return Map<String, Object>
	 * @throws Exception
	 */
	 boolean updatImOrContent(Map<String,Object> paramMap) throws Exception;
	
	/**
	 * @description 教师/学生信息页修改（包含上传图片和修改简介）
	 * @param Map<String, Object> 简介，照片，教师Id
	 * @return Map<String, Object> 
	 * @throws Exception
	 */
	 boolean updateInfo(Map<String,Object> paramMap) throws Exception;
	
	/**
	 * @description 通过班级id查人员id的集合
	 * @param Map<String,Object> paramMap 参数值与数据库column值一致
	 * @return List<Map<String, Object>> 人员列表（如果查询一个人，就在参数中给人员id）
	 * @throws Exception
	 */
	 List<Map<String,Object>> getUseIdList(List<String> paramList) throws Exception;
	
	/**
	 * @description 重置密码
	 * @param Map<String,Object> paramMap
	 * @return boolean
	 * @throws Exception
	 */
	 boolean resetPwd(Map<String, Object> paramMap) throws Exception;
	
	/**
	 * @description 查询全部教师
	 * @param 
	 * @return Map<String, Object> 
	 * @throws Exception
	 */
	 List<Map<String, Object>> getTeachers() throws Exception;
	
	/**
	 * @description 用户详情
	 * @param 
	 * @return Map<String, Object> 
	 * @throws Exception
	 */
	 List<Map<String, Object>> getMemberDetailById(Map<String, Object> paramMap) throws Exception;
	
	/**
	 * @description xzx修改某个班级下的所有学生的院系id专业id
	 * @param classId professionId departmentId
	 * @return Map<String, Object> 
	 * @throws Exception
	 */
	 void saveStuProAndDepartId(Map<String, Object> paramMap) throws Exception;

	/**
	 * @description 修改头像
	 * @param Map<String, Object> 头像，教师Id
	 * @return Map<String, Object>
	 * @throws Exception
	 */
	 boolean updateHeadIcon(Map<String,Object> paramMap) throws Exception;

	/**xzx
	 * @description 通过人员Id获取这个人的基本信息
	 * @param id
	 * */
	 Map<String, Object> getMemberMsgById(Map<String, Object> map) throws Exception;

	/**xzx
	 * @description 修改人员信息（管理员端）
	 *
	 */
	 void saveMemberMsg(Map<String, Object> map) throws Exception;

	/**
	 * @description 通过角色id获取这个人的基本信息
	 * @param id
	 * */
	 List<Map<String, Object>> getMemberMsgByRoleId() throws Exception;

	/**
	 * @description
	 * @param Map<String,Object> paramMap
	 * @return
	 * @throws Exception
	 */
	 void updateSetTime(String setTime) throws Exception;

	/**
	 * @description settime表
	 * @return
	 * @throws Exception
	 */
	 String getSetTime() throws Exception;

	/**
	 * @description 获取这个学号/工号的全部人员
	 * @param String loginName登录名
	 * @return List<Map<String, Object>> 人员集合
	 * @throws Exception
	 */
	 List<Map<String, Object>> blackList(Map<String,Object> paramMap) throws Exception;

	/**
	 * @description 添加人员的方法，参数key与数据库column对应即可。
	 * @param Map<String,Object> paramMap
	 * @return
	 * @throws Exception
	 */
	boolean addMemberExpiryTime(Map<String, Object> paramMap) throws Exception;

	List<Map<String, Object>> getOverdueMemberList() throws Exception;
	
}